package com.aura.springbook.common.exception;

import lombok.AllArgsConstructor;
import lombok.Getter;


@Getter
@AllArgsConstructor
public enum ResultCode {

    // 通用成功
    SUCCESS(200, "操作成功"),

    // 客户端错误（400开头）
    PARAM_ERROR(400, "参数错误（如必填项为空、格式错误）"),
    NOT_LOGIN(401, "未登录（请先登录）"),
    NO_AUTH(403, "无权限（如查询他人信息）"),
    RESOURCE_NOT_FOUND(404, "资源不存在（如图书ID无效）"),

    // 业务逻辑错误（500开头，系统无异常但业务不允许）
    SYSTEM_ERROR(500, "系统内部异常"),
    USER_EXIST(501, "用户名已存在（注册时）"),
    LOGIN_FAIL(502, "登录失败（用户名或密码错误）"),
    BOOK_STOCK_EMPTY(503, "图书库存不足（无法借阅）"),
    BOOK_ALREADY_BORROWED(504, "图书已被借阅（同一本书未归还时无法再次借阅）"),
    RETURN_FAIL(505, "归还失败（如记录不存在或已归还）");

    /**
     * 状态码
     * <p>
     * 遵循HTTP状态码规范：
     * - 200开头：成功
     * - 400开头：客户端错误
     * - 500开头：服务器错误
     */
    private final int code;

    /**
     * 提示信息（前端可直接展示）
     * <p>
     * 用于向客户端传达操作结果的简要说明
     * 消息内容应该简洁明了，便于前端直接展示给用户
     */
    private final String message;
}